#pragma once

#include <iostream>
#include <vector>
#include <algorithm>

template <typename T, int VAL>
T add_val(T const& x)
{
    return x + VAL;
}

void f_add_val()
{
    std::vector<int> vecInt({ 1, 2, 3, 4, 5 });
    std::vector<int> vecInt2(5, 0);
    std::transform(vecInt.begin(), vecInt.end(), vecInt2.begin(), add_val<int, 5>);

    for (auto & v : vecInt2)
    {
        std::cout << v << " ";
    }

    std::cout << std::endl;
}